"""
ConnLLM V2 思考过程处理器
处理思考过程提取相关的响应处理
"""

from typing import Dict, Any, List, Optional
import logging

from .base import RequestProcessor

logger = logging.getLogger("connllm.core_v2.processors.thinking")

class ThinkingProcessor(RequestProcessor):
	"""思考过程处理器"""
	
	def __init__(self, thinking_capability):
		"""
		初始化处理器
		
		Args:
			thinking_capability: 思考过程能力组件
		"""
		self.capability = thinking_capability
	
	def process_response(self, response: Any, context: Dict[str, Any]) -> Any:
		"""
		处理响应，提取思考过程
		
		Args:
			response: API响应
			context: 请求上下文
			
		Returns:
			处理后的响应
		"""
		# 提取思考过程
		thinking = self.capability.extract_thinking(response)
		
		# 如果有思考过程，保存到上下文中
		if thinking:
			logger.debug(f"从响应中提取到思考过程: {len(thinking)}字符")
			context["thinking"] = thinking
			
			# 修改响应，移除思考过程（如果需要）
			if self.capability.should_remove_thinking():
				response = self.capability.clean_response(response)
		
		return response
